package cn.wjdiankong.levideo.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;


public class NetworkUtil {

	public static boolean isWifiNetworkAvailable(Context mContext) {  
		ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);  
		NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();  
		if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {  
			return true;  
		}  
		return false;  
	} 

	public static boolean isNetworkAvailable(Context context) {   
		ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
		if(cm == null){
			return false;
		}
		//如果仅仅是用来判断网络连接
		//则可以使用 cm.getActiveNetworkInfo().isAvailable();  
		NetworkInfo[] info = cm.getAllNetworkInfo();   
		if (info != null) {   
			for (int i = 0; i < info.length; i++) {   
				if (info[i].getState() == NetworkInfo.State.CONNECTED) {   
					return true;   
				}   
			}   
		}    
		return false;   
	}

	public static String getNetworkType(Context ctx){
		String strNetworkType = "";
		NetworkInfo networkInfo = ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
		if (networkInfo != null && networkInfo.isConnected()){
			if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI){
				strNetworkType = "WIFI";
			}else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE){
				String _strSubTypeName = networkInfo.getSubtypeName();
				// TD-SCDMA   networkType is 17
				int networkType = networkInfo.getSubtype();
				switch (networkType) {
				case TelephonyManager.NETWORK_TYPE_GPRS:
				case TelephonyManager.NETWORK_TYPE_EDGE:
				case TelephonyManager.NETWORK_TYPE_CDMA:
				case TelephonyManager.NETWORK_TYPE_1xRTT:
				case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
					strNetworkType = "2G";
					break;
				case TelephonyManager.NETWORK_TYPE_UMTS:
				case TelephonyManager.NETWORK_TYPE_EVDO_0:
				case TelephonyManager.NETWORK_TYPE_EVDO_A:
				case TelephonyManager.NETWORK_TYPE_HSDPA:
				case TelephonyManager.NETWORK_TYPE_HSUPA:
				case TelephonyManager.NETWORK_TYPE_HSPA:
				case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
				case TelephonyManager.NETWORK_TYPE_EHRPD:  //api<11 : replace by 12
				case TelephonyManager.NETWORK_TYPE_HSPAP:  //api<13 : replace by 15
					strNetworkType = "3G";
					break;
				case TelephonyManager.NETWORK_TYPE_LTE:    //api<11 : replace by 13
					strNetworkType = "4G";
					break;
				default:
					// http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式
					if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || 
							_strSubTypeName.equalsIgnoreCase("WCDMA") ||
							_strSubTypeName.equalsIgnoreCase("CDMA2000")) {
						strNetworkType = "3G";
					}else{
						strNetworkType = _strSubTypeName;
					}
					break;
				}
			}
		}
		return strNetworkType;
	}

}
